This page last changed on Sep 20, 2004 by scytacki.

There are two main types of synching: from authoring system to DiOS. And from one DiOS to anther. I will focus on the later first. This form of synching will be used to deploy the content to the client comptuers and to the handhelds from the clients.

Here is a poorly labeled diagram of this synching.

So the first milestone will be to make a system that syncs two DiOS one on a server and one on a client. The client provides a GUI for editing/creating an object in the DiOS. Then this edited object will get synced to the server and displayed on a web report.

Initially I'd like to try to use ozone as the storage mechanism for the DiOS. But this doesn't provide any syncing. So I will need to add this.
So here is a set of tasks:

  • continue with text tree editor. make it save information in ozone this will be my ozone intro.
  • add simple user login to this editor: starts up with dialog that ask you to pick a user name from a list. read from ozone database.
  • make a program that will copy the whole tree from one ozone db to another.
  • make a program that will copy the tree starting at an object to another.
  • make a method that will synchronize the tree betwen two ozone dbs
    • the synchronization should be about three steps. initially I'll have a server socket on one program that the other connects to. the connection should be limited to three chunks of info being sent:
      • inital ping by client wanting to sync, including id and last sync number, and list of locally modified/created object since then.
      • look up on server of this client and comparison of locally modified objects with server modified objects.
      • sending of diffs from the server to the client
      • conflict handling on the client.

This last bit is what I need to figure out before going further. There are few ways to do this synchronization. And we have to decide about versioning, and automic synching, and stored info about clients on the server.

I see two approaches: subversion or palm approach

  • subversion doesn't store any info about the client on the server
    • subversion does support syncing to a server that hasn't seen the client before
  • palm does store info about the client on the server.
    • palm does support syncing to server that has seen the client before

I will try to use SyncML and the Sync4J project for this. I will need to write sync sources for this. The source will be a layer on top of ozone. It isn't clear from the spec how the "remote" sources are handled. It seems like they are handled by sending the messages by the SyncSource api. So I'll need to use the client api to make another sync source like object that talks to the same object database.

design by next wed.
milestone by August 20? 3.5 weeks of limited time. Part of design is to make this milestone estimate more acurate by breaking it into parts with estimates for each.

Something not clear is the conflict handling. There is mention of it on the server, but nothing is mentioned on the client api. So how does the client figure out about things.

First Milestone


I'd estimate the first task takes 2 days and the second takes 3 days. So 1 wk for this milestone.

Second Milestone

make get users and rims working in this syncing model. This means having a user log in. And then certain nodes in the tree are questions, and their text is the answer. But there will be one of these for each user. So this means design the tree node model to handle this and the syncing mechanism too. Finally some kind of report is needed so we can see an agregate of each users work.
3 days is my estimate for this.

Third Milestone

Port parts of the existing portfolio library to this platform. Make it work with Sync4J and Ozone should be straight forward given the parts above. Making the waba parts work well in Java will take more time. Once the core portfolio code is ported the objects themself can be done one at a time. I'll start with compound documents, text boxes, and images. With these we can show most of the curriculm in this system. My estimate is 5 days for this minimal setup.

3days in july, 2 days for teemss
3 days first week in August, 2 days for teemss
3 days second week in August, 2 days for teemss
3 days before review in August, 2 days for this work.

So I should be at the second milestone by the 18 of August.
And the third by Agust 23.


DiOS_Syncing.png (image/png)
Syncing_Tree.png (image/png)
Syncing.png (image/png)
Syncing.png (image/png)
Syncing.png (image/png)
Document generated by Confluence on Jan 27, 2014 16:44